package cn.yj.quartz.service;

import cn.yj.annotation.pagehelper.page.Page;
import cn.yj.quartz.QuartzJob;
import org.quartz.SchedulerException;

/**
 * 可并发执行
 *
 * @author 永健
 * @since 2022-01-14 17:15
 */
public interface IQuartzJobService {
    /**
     * 查询调度任务日志集合
     *
     * @param job 调度信息
     *
     */
    Page<QuartzJob> selectJobList(Page<QuartzJob> page,QuartzJob job);

    /**
     * 通过调度ID查询调度任务信息
     *
     * @param jobId 调度ID
     *
     */
    QuartzJob selectJobById(Long jobId);

    /**
     * 通过调度ID删除调度任务信息
     *
     * @param jobId 调度ID
     *
     */
    int deleteJobById(Long jobId) throws SchedulerException;

    /**
     * 批量删除调度任务信息
     *
     * @param ids 需要删除的数据ID
     *
     */
    void deleteJobByIds(Long[] ids) throws SchedulerException;

    /**
     * 修改调度任务信息
     *
     * @param job 调度任务信息
     *
     */
    int updateJob(QuartzJob job) throws SchedulerException;

    /**
     * 新增调度任务信息
     *
     * @param job 调度任务信息
     *
     */
    int insertJob(QuartzJob job) throws SchedulerException;

    /**
     * 立即执行
     * @param jobId
     * @return
     */
    boolean runJob(Long jobId) throws SchedulerException;


    int resumeJob(Long jobId) throws SchedulerException;

    /**
     * 终止任务执行
     * @param jobId
     */
    boolean pauseJob(Long jobId) throws SchedulerException;
}
